Autogenerated HTML docs for v2.35.1-677-gabf47 
diff --git a/MyFirstObjectWalk.html b/MyFirstObjectWalk.html index 220998c..e0e57c8 100644 --- a/MyFirstObjectWalk.html +++ b/MyFirstObjectWalk.html 
@@ -1315,18 +1315,13 @@  <code>traverse_commit_list()</code> or <code>traverse_commit_list_filtered()</code>. Those two   functions reside in <code>list-objects.c</code>; examining the source shows that, despite   the name, these functions traverse all kinds of objects. Let&#8217;s have a look at  -the arguments to <code>traverse_commit_list_filtered()</code>, which are a superset of the  -arguments to the unfiltered version.</p></div>  +the arguments to <code>traverse_commit_list()</code>.</p></div>   <div class="ulist"><ul>   <li>   <p>  -<code>struct list_objects_filter_options *filter_options</code>: This is a struct which  - stores a filter-spec as outlined in <code>Documentation/rev-list-options.txt</code>.  -</p>  -</li>  -<li>  -<p>  -<code>struct rev_info *revs</code>: This is the <code>rev_info</code> used for the walk.  +<code>struct rev_info *revs</code>: This is the <code>rev_info</code> used for the walk. If  + its <code>filter</code> member is not <code>NULL</code>, then <code>filter</code> contains information for  + how to filter the object list.   </p>   </li>   <li>  @@ -1347,6 +1342,9 @@  and <code>show_object</code>.   </p>   </li>  +</ul></div>  +<div class="paragraph"><p>In addition, <code>traverse_commit_list_filtered()</code> has an additional paramter:</p></div>  +<div class="ulist"><ul>   <li>   <p>   <code>struct oidset *omitted</code>: A linked-list of object IDs which the provided  @@ -1354,9 +1352,8 @@  </p>   </li>   </ul></div>  -<div class="paragraph"><p>It looks like this <code>traverse_commit_list_filtered()</code> uses callbacks we provide  -instead of needing us to call it repeatedly ourselves. Cool! Let&#8217;s add the  -callbacks first.</p></div>  +<div class="paragraph"><p>It looks like these methods use callbacks we provide instead of needing us  +to call it repeatedly ourselves. Cool! Let&#8217;s add the callbacks first.</p></div>   <div class="paragraph"><p>For the sake of this tutorial, we&#8217;ll simply keep track of how many of each kind   of object we find. At file scope in <code>builtin/walken.c</code> add the following   tracking variables:</p></div>  @@ -1532,19 +1529,9 @@  help understand. In our case, that means we omit trees and blobs not directly   referenced by <code>HEAD</code> or <code>HEAD</code>'s history, because we begin the walk with only   <code>HEAD</code> in the <code>pending</code> list.)</p></div>  -<div class="paragraph"><p>First, we&#8217;ll need to <code>#include "list-objects-filter-options.h"</code> and set up the  -<code>struct list_objects_filter_options</code> at the top of the function.</p></div>  -<div class="listingblock">  -<div class="content">  -<pre><code>static void walken_object_walk(struct rev_info *rev)  -{  - struct list_objects_filter_options filter_options = { 0 };  -  - ...</code></pre>  -</div></div>   <div class="paragraph"><p>For now, we are not going to track the omitted objects, so we&#8217;ll replace those   parameters with <code>NULL</code>. For the sake of simplicity, we&#8217;ll add a simple  -build-time branch to use our filter or not. Replace the line calling  +build-time branch to use our filter or not. Preface the line calling   <code>traverse_commit_list()</code> with the following, which will remind us which kind of   walk we&#8217;ve just performed:</p></div>   <div class="listingblock">  @@ -1552,18 +1539,16 @@  <pre><code> if (0) {   /* Unfiltered: */   trace_printf(_("Unfiltered object walk.\n"));  - traverse_commit_list(rev, walken_show_commit,  - walken_show_object, NULL);   } else {   trace_printf(   _("Filtered object walk with filterspec 'tree:1'.\n"));  - parse_list_objects_filter(&amp;filter_options, "tree:1");  -  - traverse_commit_list_filtered(&amp;filter_options, rev,  - walken_show_commit, walken_show_object, NULL, NULL);  - }</code></pre>  + CALLOC_ARRAY(rev-&gt;filter, 1);  + parse_list_objects_filter(rev-&gt;filter, "tree:1");  + }  + traverse_commit_list(rev, walken_show_commit,  + walken_show_object, NULL);</code></pre>   </div></div>  -<div class="paragraph"><p><code>struct list_objects_filter_options</code> is usually built directly from a command  +<div class="paragraph"><p>The <code>rev-&gt;filter</code> member is usually built directly from a command   line argument, so the module provides an easy way to build one from a string.   Even though we aren&#8217;t taking user input right now, we can still build one with   a hardcoded string using <code>parse_list_objects_filter()</code>.</p></div>  @@ -1599,7 +1584,7 @@  <div class="content">   <pre><code> ...    - traverse_commit_list_filtered(&amp;filter_options, rev,  + traverse_commit_list_filtered(rev,   walken_show_commit, walken_show_object, NULL, &amp;omitted);     ...</code></pre>  @@ -1737,7 +1722,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-12-10 14:52:02 PST  + 2022-03-27 10:29:17 PDT   </div>   </div>   </body>  
diff --git a/MyFirstObjectWalk.txt b/MyFirstObjectWalk.txt index ca26794..8d9e855 100644 --- a/MyFirstObjectWalk.txt +++ b/MyFirstObjectWalk.txt 
@@ -522,24 +522,25 @@  `traverse_commit_list()` or `traverse_commit_list_filtered()`. Those two  functions reside in `list-objects.c`; examining the source shows that, despite  the name, these functions traverse all kinds of objects. Let's have a look at -the arguments to `traverse_commit_list_filtered()`, which are a superset of the -arguments to the unfiltered version. +the arguments to `traverse_commit_list()`.   -- `struct list_objects_filter_options *filter_options`: This is a struct which - stores a filter-spec as outlined in `Documentation/rev-list-options.txt`. -- `struct rev_info *revs`: This is the `rev_info` used for the walk. +- `struct rev_info *revs`: This is the `rev_info` used for the walk. If + its `filter` member is not `NULL`, then `filter` contains information for + how to filter the object list.  - `show_commit_fn show_commit`: A callback which will be used to handle each  individual commit object.  - `show_object_fn show_object`: A callback which will be used to handle each  non-commit object (so each blob, tree, or tag).  - `void *show_data`: A context buffer which is passed in turn to `show_commit`  and `show_object`. + +In addition, `traverse_commit_list_filtered()` has an additional paramter: +  - `struct oidset *omitted`: A linked-list of object IDs which the provided  filter caused to be omitted.   -It looks like this `traverse_commit_list_filtered()` uses callbacks we provide -instead of needing us to call it repeatedly ourselves. Cool! Let's add the -callbacks first. +It looks like these methods use callbacks we provide instead of needing us +to call it repeatedly ourselves. Cool! Let's add the callbacks first.    For the sake of this tutorial, we'll simply keep track of how many of each kind  of object we find. At file scope in `builtin/walken.c` add the following @@ -712,20 +713,9 @@  referenced by `HEAD` or `HEAD`'s history, because we begin the walk with only  `HEAD` in the `pending` list.)   -First, we'll need to `#include "list-objects-filter-options.h"` and set up the -`struct list_objects_filter_options` at the top of the function. - ----- -static void walken_object_walk(struct rev_info *rev) -{ -	struct list_objects_filter_options filter_options = { 0 }; - -	... ----- -  For now, we are not going to track the omitted objects, so we'll replace those  parameters with `NULL`. For the sake of simplicity, we'll add a simple -build-time branch to use our filter or not. Replace the line calling +build-time branch to use our filter or not. Preface the line calling  `traverse_commit_list()` with the following, which will remind us which kind of  walk we've just performed:   @@ -733,19 +723,17 @@ 	if (0) { 	/* Unfiltered: */ 	trace_printf(_("Unfiltered object walk.\n")); -	traverse_commit_list(rev, walken_show_commit, -	walken_show_object, NULL); 	} else { 	trace_printf( 	_("Filtered object walk with filterspec 'tree:1'.\n")); -	parse_list_objects_filter(&filter_options, "tree:1"); - -	traverse_commit_list_filtered(&filter_options, rev, -	walken_show_commit, walken_show_object, NULL, NULL); +	CALLOC_ARRAY(rev->filter, 1); +	parse_list_objects_filter(rev->filter, "tree:1"); 	} +	traverse_commit_list(rev, walken_show_commit, + walken_show_object, NULL);  ----   -`struct list_objects_filter_options` is usually built directly from a command +The `rev->filter` member is usually built directly from a command  line argument, so the module provides an easy way to build one from a string.  Even though we aren't taking user input right now, we can still build one with  a hardcoded string using `parse_list_objects_filter()`. @@ -784,7 +772,7 @@  ---- 	...   -	traverse_commit_list_filtered(&filter_options, rev, +	traverse_commit_list_filtered(rev, 	walken_show_commit, walken_show_object, NULL, &omitted);   	... 
diff --git a/RelNotes/2.36.0.txt b/RelNotes/2.36.0.txt index d67727b..721b5d2 100644 --- a/RelNotes/2.36.0.txt +++ b/RelNotes/2.36.0.txt 
@@ -74,6 +74,16 @@  refs involved, takes long time renaming them. The command has been  taught to show progress bar while making the user wait.   + * Bundle file format gets extended to allow a partial bundle, + filtered by similar criteria you would give when making a + partial/lazy clone. + + * A new built-in userdiff driver for kotlin has been added. + + * "git repack" learned a new configuration to disable triggering of + age-old "update-server-info" command, which is rarely useful these + days. +    Performance, Internal Implementation, Development Support etc.   @@ -132,6 +142,22 @@    * Count string_list items in size_t, not "unsigned int".   + * The single-key interactive operation used by "git add -p" has been + made more robust. + + * Remove unneeded <meta http-equiv=content-type...> from gitweb + output. + + * "git name-rev" learned to use the generation numbers when setting + the lower bound of searching commits used to explain the revision, + when available, instead of committer time. + + * Replace core.fsyncObjectFiles with two new configuration variables, + core.fsync and core.fsyncMethod. + + * Updates to refs traditionally weren't fsync'ed, but we can + configure using core.fsync variable to do so. +    Fixes since v2.35  ----------------- @@ -320,6 +346,16 @@  (not) handled has been corrected.  (merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).   + * The method to trigger malloc check used in our tests no longer work + with newer versions of glibc. + (merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint). + + * When "git fetch --recurse-submodules" grabbed submodule commits + that would be needed to recursively check out newly fetched commits + in the superproject, it only paid attention to submodules that are + in the current checkout of the superproject. We now do so for all + submodules that have been run "git submodule init" on. +  * Other code cleanup, docfix, build fix, etc.  (merge cfc5cf428b jc/find-header later to maint).  (merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint). @@ -345,3 +381,7 @@  (merge 04bf052eef ab/grep-patterntype later to maint).  (merge 6ee36364eb ab/diff-free-more later to maint).  (merge 63a36017fe nj/read-tree-doc-reffix later to maint). + (merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint). + (merge c614beb933 ep/t6423-modernize later to maint). + (merge 57be9c6dee ab/reflog-prep-fix later to maint). + (merge 5327d8982a js/in-place-reverse-in-sequencer later to maint). 
diff --git a/fetch-options.txt b/fetch-options.txt index f903683..6cdd9d4 100644 --- a/fetch-options.txt +++ b/fetch-options.txt 
@@ -186,15 +186,23 @@  ifndef::git-pull[]  --recurse-submodules[=yes|on-demand|no]:: 	This option controls if and under what conditions new commits of -	populated submodules should be fetched too. It can be used as a -	boolean option to completely disable recursion when set to 'no' or to -	unconditionally recurse into all populated submodules when set to -	'yes', which is the default when this option is used without any -	value. Use 'on-demand' to only recurse into a populated submodule -	when the superproject retrieves a commit that updates the submodule's -	reference to a commit that isn't already in the local submodule -	clone. By default, 'on-demand' is used, unless -	`fetch.recurseSubmodules` is set (see linkgit:git-config[1]). +	submodules should be fetched too. When recursing through submodules, +	`git fetch` always attempts to fetch "changed" submodules, that is, a +	submodule that has commits that are referenced by a newly fetched +	superproject commit but are missing in the local submodule clone. A +	changed submodule can be fetched as long as it is present locally e.g. +	in `$GIT_DIR/modules/` (see linkgit:gitsubmodules[7]); if the upstream +	adds a new submodule, that submodule cannot be fetched until it is +	cloned e.g. by `git submodule update`. ++ +When set to 'on-demand', only changed submodules are fetched. When set +to 'yes', all populated submodules are fetched and submodules that are +both unpopulated and changed are fetched. When set to 'no', submodules +are never fetched. ++ +When unspecified, this uses the value of `fetch.recurseSubmodules` if it +is set (see linkgit:git-config[1]), defaulting to 'on-demand' if unset. +When this option is used without any value, it defaults to 'yes'.  endif::git-pull[]    -j:: 
diff --git a/git-bundle.html b/git-bundle.html index 7dde574..c1f515e 100644 --- a/git-bundle.html +++ b/git-bundle.html 
@@ -823,8 +823,11 @@  cleanly to the current repository. This includes checks on the   bundle format itself as well as checking that the prerequisite   commits exist and are fully linked in the current repository.  - <em>git bundle</em> prints a list of missing commits, if any, and exits  - with a non-zero status.  + Information about additional capabilities, such as "object filter",  + is printed. See "Capabilities" in link:technical/bundle-format.html  + for more information. Finally, <em>git bundle</em> prints a list of  + missing commits, if any. The exit code is zero for success, but  + will be nonzero if the bundle file is invalid.   </p>   </dd>   <dt class="hdlist1">  @@ -1121,7 +1124,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-29 16:18:45 PDT  + 2022-03-27 10:29:17 PDT   </div>   </div>   </body>  
diff --git a/git-bundle.txt b/git-bundle.txt index 72ab813..ac4c435 100644 --- a/git-bundle.txt +++ b/git-bundle.txt 
@@ -75,8 +75,11 @@ 	cleanly to the current repository. This includes checks on the 	bundle format itself as well as checking that the prerequisite 	commits exist and are fully linked in the current repository. -	'git bundle' prints a list of missing commits, if any, and exits -	with a non-zero status. +	Information about additional capabilities, such as "object filter", +	is printed. See "Capabilities" in link:technical/bundle-format.html +	for more information. Finally, 'git bundle' prints a list of +	missing commits, if any. The exit code is zero for success, but +	will be nonzero if the bundle file is invalid.    list-heads <file>:: 	Lists the references defined in the bundle. If followed by a 
diff --git a/git-config.html b/git-config.html index 88e5867..59cef4d 100644 --- a/git-config.html +++ b/git-config.html 
@@ -3027,16 +3027,133 @@  </ul></div>   </dd>   <dt class="hdlist1">  +core.fsync  +</dt>  +<dd>  +<p>  + A comma-separated list of components of the repository that  + should be hardened via the core.fsyncMethod when created or  + modified. You can disable hardening of any component by  + prefixing it with a <em>-</em>. Items that are not hardened may be  + lost in the event of an unclean system shutdown. Unless you  + have special requirements, it is recommended that you leave  + this option empty or pick one of <code>committed</code>, <code>added</code>,  + or <code>all</code>.  +</p>  +<div class="paragraph"><p>When this configuration is encountered, the set of components starts with  +the platform default value, disabled components are removed, and additional  +components are added. <code>none</code> resets the state so that the platform default  +is ignored.</p></div>  +<div class="paragraph"><p>The empty string resets the fsync configuration to the platform  +default. The default on most platforms is equivalent to  +<code>core.fsync=committed,-loose-object</code>, which has good performance,  +but risks losing recent work in the event of an unclean system shutdown.</p></div>  +<div class="ulist"><ul>  +<li>  +<p>  +<code>none</code> clears the set of fsynced components.  +</p>  +</li>  +<li>  +<p>  +<code>loose-object</code> hardens objects added to the repo in loose-object form.  +</p>  +</li>  +<li>  +<p>  +<code>pack</code> hardens objects added to the repo in packfile form.  +</p>  +</li>  +<li>  +<p>  +<code>pack-metadata</code> hardens packfile bitmaps and indexes.  +</p>  +</li>  +<li>  +<p>  +<code>commit-graph</code> hardens the commit graph file.  +</p>  +</li>  +<li>  +<p>  +<code>index</code> hardens the index when it is modified.  +</p>  +</li>  +<li>  +<p>  +<code>objects</code> is an aggregate option that is equivalent to  + <code>loose-object,pack</code>.  +</p>  +</li>  +<li>  +<p>  +<code>reference</code> hardens references modified in the repo.  +</p>  +</li>  +<li>  +<p>  +<code>derived-metadata</code> is an aggregate option that is equivalent to  + <code>pack-metadata,commit-graph</code>.  +</p>  +</li>  +<li>  +<p>  +<code>committed</code> is an aggregate option that is currently equivalent to  + <code>objects</code>. This mode sacrifices some performance to ensure that work  + that is committed to the repository with <code>git commit</code> or similar commands  + is hardened.  +</p>  +</li>  +<li>  +<p>  +<code>added</code> is an aggregate option that is currently equivalent to  + <code>committed,index</code>. This mode sacrifices additional performance to  + ensure that the results of commands like <code>git add</code> and similar operations  + are hardened.  +</p>  +</li>  +<li>  +<p>  +<code>all</code> is an aggregate option that syncs all individual components above.  +</p>  +</li>  +</ul></div>  +</dd>  +<dt class="hdlist1">  +core.fsyncMethod  +</dt>  +<dd>  +<p>  + A value indicating the strategy Git will use to harden repository data  + using fsync and related primitives.  +</p>  +<div class="ulist"><ul>  +<li>  +<p>  +<code>fsync</code> uses the fsync() system call or platform equivalents.  +</p>  +</li>  +<li>  +<p>  +<code>writeout-only</code> issues pagecache writeback requests, but depending on the  + filesystem and storage hardware, data added to the repository may not be  + durable in the event of a system crash. This is the default mode on macOS.  +</p>  +</li>  +</ul></div>  +</dd>  +<dt class="hdlist1">   core.fsyncObjectFiles   </dt>   <dd>   <p>   This boolean will enable <em>fsync()</em> when writing object files.  + This setting is deprecated. Use core.fsync instead.   </p>  -<div class="paragraph"><p>This is a total waste of time and effort on a filesystem that orders  -data writes properly, but can be useful for filesystems that do not use  -journalling (traditional UNIX filesystems) or that only journal metadata  -and not file contents (OS X&#8217;s HFS+, or Linux ext3 with "data=writeback").</p></div>  +<div class="paragraph"><p>This setting affects data added to the Git repository in loose-object  +form. When set to true, Git will issue an fsync or similar system call  +to flush caches so that loose-objects remain consistent in the face  +of a unclean system shutdown.</p></div>   </dd>   <dt class="hdlist1">   core.preloadIndex  @@ -9350,6 +9467,16 @@  </p>   </dd>   <dt class="hdlist1">  +repack.updateServerInfo  +</dt>  +<dd>  +<p>  + If set to false, <a href="git-repack.html">git-repack(1)</a> will not run  + <a href="git-update-server-info.html">git-update-server-info(1)</a>. Defaults to true. Can be overridden  + when true by the <code>-n</code> option of <a href="git-repack.html">git-repack(1)</a>.  +</p>  +</dd>  +<dt class="hdlist1">   rerere.autoUpdate   </dt>   <dd>  
diff --git a/git-fetch.html b/git-fetch.html index 3a580e9..40a2532 100644 --- a/git-fetch.html +++ b/git-fetch.html 
@@ -1091,16 +1091,22 @@  <dd>   <p>   This option controls if and under what conditions new commits of  - populated submodules should be fetched too. It can be used as a  - boolean option to completely disable recursion when set to <em>no</em> or to  - unconditionally recurse into all populated submodules when set to  - <em>yes</em>, which is the default when this option is used without any  - value. Use <em>on-demand</em> to only recurse into a populated submodule  - when the superproject retrieves a commit that updates the submodule&#8217;s  - reference to a commit that isn&#8217;t already in the local submodule  - clone. By default, <em>on-demand</em> is used, unless  - <code>fetch.recurseSubmodules</code> is set (see <a href="git-config.html">git-config(1)</a>).  + submodules should be fetched too. When recursing through submodules,  + <code>git fetch</code> always attempts to fetch "changed" submodules, that is, a  + submodule that has commits that are referenced by a newly fetched  + superproject commit but are missing in the local submodule clone. A  + changed submodule can be fetched as long as it is present locally e.g.  + in <code>$GIT_DIR/modules/</code> (see <a href="gitsubmodules.html">gitsubmodules(7)</a>); if the upstream  + adds a new submodule, that submodule cannot be fetched until it is  + cloned e.g. by <code>git submodule update</code>.   </p>  +<div class="paragraph"><p>When set to <em>on-demand</em>, only changed submodules are fetched. When set  +to <em>yes</em>, all populated submodules are fetched and submodules that are  +both unpopulated and changed are fetched. When set to <em>no</em>, submodules  +are never fetched.</p></div>  +<div class="paragraph"><p>When unspecified, this uses the value of <code>fetch.recurseSubmodules</code> if it  +is set (see <a href="git-config.html">git-config(1)</a>), defaulting to <em>on-demand</em> if unset.  +When this option is used without any value, it defaults to <em>yes</em>.</p></div>   </dd>   <dt class="hdlist1">   -j  @@ -1976,12 +1982,10 @@  <div class="sect1">   <h2 id="_bugs">BUGS</h2>   <div class="sectionbody">  -<div class="paragraph"><p>Using --recurse-submodules can only fetch new commits in already checked  -out submodules right now. When e.g. upstream added a new submodule in the  -just fetched commits of the superproject the submodule itself cannot be  -fetched, making it impossible to check out that submodule later without  -having to do a fetch again. This is expected to be fixed in a future Git  -version.</p></div>  +<div class="paragraph"><p>Using --recurse-submodules can only fetch new commits in submodules that are  +present locally e.g. in <code>$GIT_DIR/modules/</code>. If the upstream adds a new  +submodule, that submodule cannot be fetched until it is cloned e.g. by <code>git  +submodule update</code>. This is expected to be fixed in a future Git version.</p></div>   </div>   </div>   <div class="sect1">  @@ -2001,7 +2005,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-08-06 16:16:38 PDT  + 2022-03-27 10:29:17 PDT   </div>   </div>   </body>  
diff --git a/git-fetch.txt b/git-fetch.txt index 550c16c..e9d3646 100644 --- a/git-fetch.txt +++ b/git-fetch.txt 
@@ -287,12 +287,10 @@    BUGS  ---- -Using --recurse-submodules can only fetch new commits in already checked -out submodules right now. When e.g. upstream added a new submodule in the -just fetched commits of the superproject the submodule itself cannot be -fetched, making it impossible to check out that submodule later without -having to do a fetch again. This is expected to be fixed in a future Git -version. +Using --recurse-submodules can only fetch new commits in submodules that are +present locally e.g. in `$GIT_DIR/modules/`. If the upstream adds a new +submodule, that submodule cannot be fetched until it is cloned e.g. by `git +submodule update`. This is expected to be fixed in a future Git version.    SEE ALSO  -------- 
diff --git a/git-index-pack.html b/git-index-pack.html index b15936c..db02068 100644 --- a/git-index-pack.html +++ b/git-index-pack.html 
@@ -943,6 +943,19 @@  repositories may change in backwards-incompatible ways. Only use   <code>--object-format=sha256</code> for testing purposes.</p></div>   </dd>  +<dt class="hdlist1">  +--promisor[=&lt;message&gt;]  +</dt>  +<dd>  +<p>  + Before committing the pack-index, create a .promisor file for this  + pack. Particularly helpful when writing a promisor pack with --fix-thin  + since the name of the pack is not final until the pack has been fully  + written. If a <code>&lt;message&gt;</code> is provided, then that content will be  + written to the .promisor file for future reference. See  + <a href="technical/partial-clone.html">partial clone</a> for more information.  +</p>  +</dd>   </dl></div>   </div>   </div>  @@ -968,7 +981,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-09-20 15:44:03 PDT  + 2022-03-27 10:29:17 PDT   </div>   </div>   </body>  
diff --git a/git-index-pack.txt b/git-index-pack.txt index 1f1e359..4e71c25 100644 --- a/git-index-pack.txt +++ b/git-index-pack.txt 
@@ -122,6 +122,14 @@  +  include::object-format-disclaimer.txt[]   +--promisor[=<message>]:: +	Before committing the pack-index, create a .promisor file for this +	pack. Particularly helpful when writing a promisor pack with --fix-thin +	since the name of the pack is not final until the pack has been fully +	written. If a `<message>` is provided, then that content will be +	written to the .promisor file for future reference. See +	link:technical/partial-clone.html[partial clone] for more information. +  NOTES  -----   
diff --git a/git-maintenance.html b/git-maintenance.html index 3f0efa2..89b1c55 100644 --- a/git-maintenance.html +++ b/git-maintenance.html 
@@ -749,7 +749,9 @@  <h2 id="_synopsis">SYNOPSIS</h2>   <div class="sectionbody">   <div class="verseblock">  -<pre class="content"><em>git maintenance</em> run [&lt;options&gt;]</pre>  +<pre class="content"><em>git maintenance</em> run [&lt;options&gt;]  +<em>git maintenance</em> start [--scheduler=&lt;scheduler&gt;]  +<em>git maintenance</em> (stop|register|unregister)</pre>   <div class="attribution">   </div></div>   </div>  @@ -773,6 +775,39 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  +run  +</dt>  +<dd>  +<p>  + Run one or more maintenance tasks. If one or more <code>--task</code> options  + are specified, then those tasks are run in that order. Otherwise,  + the tasks are determined by which <code>maintenance.&lt;task&gt;.enabled</code>  + config options are true. By default, only <code>maintenance.gc.enabled</code>  + is true.  +</p>  +</dd>  +<dt class="hdlist1">  +start  +</dt>  +<dd>  +<p>  + Start running maintenance on the current repository. This performs  + the same config updates as the <code>register</code> subcommand, then updates  + the background scheduler to run <code>git maintenance run --scheduled</code>  + on an hourly basis.  +</p>  +</dd>  +<dt class="hdlist1">  +stop  +</dt>  +<dd>  +<p>  + Halt the background maintenance schedule. The current repository  + is not removed from the list of maintained repositories, in case  + the background maintenance is restarted later.  +</p>  +</dd>  +<dt class="hdlist1">   register   </dt>   <dd>  @@ -824,39 +859,6 @@  setting will remain after a <code>git maintenance unregister</code> command.</p></div>   </dd>   <dt class="hdlist1">  -run  -</dt>  -<dd>  -<p>  - Run one or more maintenance tasks. If one or more <code>--task</code> options  - are specified, then those tasks are run in that order. Otherwise,  - the tasks are determined by which <code>maintenance.&lt;task&gt;.enabled</code>  - config options are true. By default, only <code>maintenance.gc.enabled</code>  - is true.  -</p>  -</dd>  -<dt class="hdlist1">  -start  -</dt>  -<dd>  -<p>  - Start running maintenance on the current repository. This performs  - the same config updates as the <code>register</code> subcommand, then updates  - the background scheduler to run <code>git maintenance run --scheduled</code>  - on an hourly basis.  -</p>  -</dd>  -<dt class="hdlist1">  -stop  -</dt>  -<dd>  -<p>  - Halt the background maintenance schedule. The current repository  - is not removed from the list of maintained repositories, in case  - the background maintenance is restarted later.  -</p>  -</dd>  -<dt class="hdlist1">   unregister   </dt>   <dd>  @@ -1239,7 +1241,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-09-20 15:44:03 PDT  + 2022-03-27 10:29:17 PDT   </div>   </div>   </body>  
diff --git a/git-maintenance.txt b/git-maintenance.txt index e2cfb68..e56bad2 100644 --- a/git-maintenance.txt +++ b/git-maintenance.txt 
@@ -10,6 +10,8 @@  --------  [verse]  'git maintenance' run [<options>] +'git maintenance' start [--scheduler=<scheduler>] +'git maintenance' (stop|register|unregister)      DESCRIPTION @@ -29,6 +31,24 @@  SUBCOMMANDS  -----------   +run:: +	Run one or more maintenance tasks. If one or more `--task` options +	are specified, then those tasks are run in that order. Otherwise, +	the tasks are determined by which `maintenance.<task>.enabled` +	config options are true. By default, only `maintenance.gc.enabled` +	is true. + +start:: +	Start running maintenance on the current repository. This performs +	the same config updates as the `register` subcommand, then updates +	the background scheduler to run `git maintenance run --scheduled` +	on an hourly basis. + +stop:: +	Halt the background maintenance schedule. The current repository +	is not removed from the list of maintained repositories, in case +	the background maintenance is restarted later. +  register:: 	Initialize Git config values so any scheduled maintenance will 	start running on this repository. This adds the repository to the @@ -55,24 +75,6 @@  setting `maintenance.auto = false` in the current repository. This config  setting will remain after a `git maintenance unregister` command.   -run:: -	Run one or more maintenance tasks. If one or more `--task` options -	are specified, then those tasks are run in that order. Otherwise, -	the tasks are determined by which `maintenance.<task>.enabled` -	config options are true. By default, only `maintenance.gc.enabled` -	is true. - -start:: -	Start running maintenance on the current repository. This performs -	the same config updates as the `register` subcommand, then updates -	the background scheduler to run `git maintenance run --scheduled` -	on an hourly basis. - -stop:: -	Halt the background maintenance schedule. The current repository -	is not removed from the list of maintained repositories, in case -	the background maintenance is restarted later. -  unregister:: 	Remove the current repository from background maintenance. This 	only removes the repository from the configured list. It does not 
diff --git a/gitattributes.html b/gitattributes.html index 89a462b..9b67132 100644 --- a/gitattributes.html +++ b/gitattributes.html 
@@ -1634,6 +1634,11 @@  </li>   <li>   <p>  +<code>kotlin</code> suitable for source code in the Kotlin language.  +</p>  +</li>  +<li>  +<p>   <code>markdown</code> suitable for Markdown documents.   </p>   </li>  @@ -2197,7 +2202,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-02-23 17:16:40 PST  + 2022-03-27 10:29:17 PDT   </div>   </div>   </body>  
diff --git a/gitattributes.txt b/gitattributes.txt index a71dad2..4b36d51 100644 --- a/gitattributes.txt +++ b/gitattributes.txt 
@@ -829,6 +829,8 @@    - `java` suitable for source code in the Java language.   +- `kotlin` suitable for source code in the Kotlin language. +  - `markdown` suitable for Markdown documents.    - `matlab` suitable for source code in the MATLAB and Octave languages. 
diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html index 696877c..20acf5d 100644 --- a/howto/coordinate-embargoed-releases.html +++ b/howto/coordinate-embargoed-releases.html 
@@ -873,7 +873,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:14 PDT  + 2022-03-27 10:29:50 PDT   </div>   </div>   </body>  
diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html index 7f9e183..7040714 100644 --- a/howto/keep-canonical-history-correct.html +++ b/howto/keep-canonical-history-correct.html 
@@ -938,7 +938,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:13 PDT  + 2022-03-27 10:29:50 PDT   </div>   </div>   </body>  
diff --git a/howto/maintain-git.html b/howto/maintain-git.html index 5f85139..9437691 100644 --- a/howto/maintain-git.html +++ b/howto/maintain-git.html 
@@ -1469,7 +1469,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:14 PDT  + 2022-03-27 10:29:50 PDT   </div>   </div>   </body>  
diff --git a/howto/new-command.html b/howto/new-command.html index 3c0f6e6..a9a8a04 100644 --- a/howto/new-command.html +++ b/howto/new-command.html 
@@ -863,7 +863,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:10 PDT  + 2022-03-27 10:29:47 PDT   </div>   </div>   </body>  
diff --git a/howto/rebase-from-internal-branch.html b/howto/rebase-from-internal-branch.html index 43d4acf..56adb96 100644 --- a/howto/rebase-from-internal-branch.html +++ b/howto/rebase-from-internal-branch.html 
@@ -895,7 +895,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:13 PDT  + 2022-03-27 10:29:50 PDT   </div>   </div>   </body>  
diff --git a/howto/rebuild-from-update-hook.html b/howto/rebuild-from-update-hook.html index eafbb27..dd8321e 100644 --- a/howto/rebuild-from-update-hook.html +++ b/howto/rebuild-from-update-hook.html 
@@ -847,7 +847,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:13 PDT  + 2022-03-27 10:29:49 PDT   </div>   </div>   </body>  
diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html index f0b59ca..8a4f120 100644 --- a/howto/recover-corrupted-blob-object.html +++ b/howto/recover-corrupted-blob-object.html 
@@ -880,7 +880,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:13 PDT  + 2022-03-27 10:29:49 PDT   </div>   </div>   </body>  
diff --git a/howto/recover-corrupted-object-harder.html b/howto/recover-corrupted-object-harder.html index 58c39a5..7b87587 100644 --- a/howto/recover-corrupted-object-harder.html +++ b/howto/recover-corrupted-object-harder.html 
@@ -1189,7 +1189,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:13 PDT  + 2022-03-27 10:29:49 PDT   </div>   </div>   </body>  
diff --git a/howto/revert-a-faulty-merge.html b/howto/revert-a-faulty-merge.html index 9f5cec4..10388d5 100644 --- a/howto/revert-a-faulty-merge.html +++ b/howto/revert-a-faulty-merge.html 
@@ -1025,7 +1025,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:12 PDT  + 2022-03-27 10:29:49 PDT   </div>   </div>   </body>  
diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html index 96823bd..91ef8f5 100644 --- a/howto/revert-branch-rebase.html +++ b/howto/revert-branch-rebase.html 
@@ -907,7 +907,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:10 PDT  + 2022-03-27 10:29:48 PDT   </div>   </div>   </body>  
diff --git a/howto/separating-topic-branches.html b/howto/separating-topic-branches.html index 58c8568..469756d 100644 --- a/howto/separating-topic-branches.html +++ b/howto/separating-topic-branches.html 
@@ -841,7 +841,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:12 PDT  + 2022-03-27 10:29:49 PDT   </div>   </div>   </body>  
diff --git a/howto/setup-git-server-over-http.html b/howto/setup-git-server-over-http.html index 02fb92c..c226e68 100644 --- a/howto/setup-git-server-over-http.html +++ b/howto/setup-git-server-over-http.html 
@@ -1071,7 +1071,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:12 PDT  + 2022-03-27 10:29:48 PDT   </div>   </div>   </body>  
diff --git a/howto/update-hook-example.html b/howto/update-hook-example.html index f067ab5..6dda827 100644 --- a/howto/update-hook-example.html +++ b/howto/update-hook-example.html 
@@ -930,7 +930,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:11 PDT  + 2022-03-27 10:29:48 PDT   </div>   </div>   </body>  
diff --git a/howto/use-git-daemon.html b/howto/use-git-daemon.html index 4df67c5..a7daad6 100644 --- a/howto/use-git-daemon.html +++ b/howto/use-git-daemon.html 
@@ -791,7 +791,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:11 PDT  + 2022-03-27 10:29:48 PDT   </div>   </div>   </body>  
diff --git a/howto/using-merge-subtree.html b/howto/using-merge-subtree.html index 44934f0..9c74de2 100644 --- a/howto/using-merge-subtree.html +++ b/howto/using-merge-subtree.html 
@@ -848,7 +848,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:10 PDT  + 2022-03-27 10:29:48 PDT   </div>   </div>   </body>  
diff --git a/howto/using-signed-tag-in-pull-request.html b/howto/using-signed-tag-in-pull-request.html index b817c15..b99c1a2 100644 --- a/howto/using-signed-tag-in-pull-request.html +++ b/howto/using-signed-tag-in-pull-request.html 
@@ -952,7 +952,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2022-03-16 18:09:11 PDT  + 2022-03-27 10:29:48 PDT   </div>   </div>   </body>  
diff --git a/technical/bundle-format.html b/technical/bundle-format.html index a6c588f..5440bec 100644 --- a/technical/bundle-format.html +++ b/technical/bundle-format.html 
@@ -827,9 +827,22 @@  <h2 id="_capabilities">Capabilities</h2>   <div class="sectionbody">   <div class="paragraph"><p>Because there is no opportunity for negotiation, unknown capabilities cause <em>git  -bundle</em> to abort. The only known capability is <code>object-format</code>, which specifies  -the hash algorithm in use, and can take the same values as the  -<code>extensions.objectFormat</code> configuration value.</p></div>  +bundle</em> to abort.</p></div>  +<div class="ulist"><ul>  +<li>  +<p>  +<code>object-format</code> specifies the hash algorithm in use, and can take the same  + values as the <code>extensions.objectFormat</code> configuration value.  +</p>  +</li>  +<li>  +<p>  +<code>filter</code> specifies an object filter as in the <code>--filter</code> option in  + <a href="../git-rev-list.html">git-rev-list(1)</a>. The resulting pack-file must be marked as a  + <code>.promisor</code> pack-file after it is unbundled.  +</p>  +</li>  +</ul></div>   </div>   </div>   </div>  @@ -837,7 +850,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2020-08-11 20:37:50 PDT  + 2022-03-27 10:29:17 PDT   </div>   </div>   </body>  
diff --git a/technical/bundle-format.txt b/technical/bundle-format.txt index bac558d..b9be864 100644 --- a/technical/bundle-format.txt +++ b/technical/bundle-format.txt 
@@ -71,6 +71,11 @@  == Capabilities    Because there is no opportunity for negotiation, unknown capabilities cause 'git -bundle' to abort. The only known capability is `object-format`, which specifies -the hash algorithm in use, and can take the same values as the -`extensions.objectFormat` configuration value. +bundle' to abort. + +* `object-format` specifies the hash algorithm in use, and can take the same + values as the `extensions.objectFormat` configuration value. + +* `filter` specifies an object filter as in the `--filter` option in + linkgit:git-rev-list[1]. The resulting pack-file must be marked as a + `.promisor` pack-file after it is unbundled.